package ink.yql.controller;

import ink.yql.model.Project;
import ink.yql.model.ProjectUpdate;
import ink.yql.service.ProjectService;
import ink.yql.util.RestObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/project")
public class ProjectControiller {
    @Autowired
    private ProjectService projectService;
    @GetMapping("/{pid}/{sendTime}")
    public RestObject getByPid(@PathVariable("pid") Integer pid, @PathVariable("sendTime") Long sendTime) {
        // 保护措施  以防拿到url一直请求
        if (System.currentTimeMillis() / 1000 - sendTime > 3) {
            return RestObject.builder().code("400").message("请0求时间超时").build();
        }
        return projectService.getByPid(pid);
    }

    /**
     * 获取项目更新的内容
     * @param pid
     * @param sendTime
     * @return
     */
    @GetMapping("/update/{pid}/{sendTime}")
    public RestObject getUpdateByPid(@PathVariable("pid") Integer pid, @PathVariable("sendTime") Long sendTime) {
        // 保护措施  以防拿到url一直请求
        if (System.currentTimeMillis() / 1000 - sendTime > 3) {
            return RestObject.builder().code("400").message("请0求时间超时").build();
        }
        return projectService.getUpdateByPid(pid);
    }
    @GetMapping("/{lable}/{pstatus}/{orderBy}/{sendTime}")
    public RestObject getByStatus(@PathVariable("lable") String lable,
                                  @PathVariable("pstatus") String pstatus,
                                  @PathVariable("orderBy") String orderBy,
                                  @PathVariable("sendTime") Long sendTime) {
        // 保护措施  以防拿到url一直请求
        if (System.currentTimeMillis() / 1000 - sendTime > 3) {
            return RestObject.builder().code("400").message("请求时间超时").build();
        }
        return projectService.getByStatus(lable,pstatus,orderBy);
    }

    /**
     * 添加项目
     * @param project
     * @param sendTime
     * @return
     */
    @PostMapping("/{sendTime}")
    public RestObject addOne(@RequestBody Project project,
                             @PathVariable("sendTime") Long sendTime) {
        // 保护措施  以防拿到url一直请求
        if (System.currentTimeMillis() / 1000 - sendTime > 3) {
            return RestObject.builder().code("400").message("请求时间超时").build();
        }
        return projectService.addOne(project);
    }

    /**
     * 添加项目更新
     * @param projectUpdate
     * @param sendTime
     * @return
     */
    @PostMapping("/update/{sendTime}")
    public RestObject update(@RequestBody ProjectUpdate projectUpdate,
                             @PathVariable("sendTime") Long sendTime) {
        // 保护措施  以防拿到url一直请求
        if (System.currentTimeMillis() / 1000 - sendTime > 3) {
            return RestObject.builder().code("400").message("请求时间超时").build();
        }
        return projectService.addUpdate(projectUpdate);
    }

    /**
     * 修改项目
     * @param project
     * @param sendTime
     * @return
     */
    @PutMapping("/{sendTime}")
    public RestObject update(@RequestBody Project project,
                             @PathVariable("sendTime") Long sendTime) {
        // 保护措施  以防拿到url一直请求
        if (System.currentTimeMillis() / 1000 - sendTime > 3) {
            return RestObject.builder().code("400").message("请求时间超时").build();
        }
        return projectService.update(project);
    }
}
